import { getDvaApp, history } from 'umi';
// import { notification } from 'antd';
import base from 'base62-yf';
import ApiConfig from '../config/api';
// import { listTreeModuleAndFunc } from '../service';
const routes = require('./index');
const qs = require('querystringify');

const { NODE_ENV = '' } = process.env;
// enum ROUTE_KEY {
//   MENU_LIST_KEY = 'MENU_LIST_KEY',
// }

/**
 * 获取菜单
 */
// const getMuen = async ({ userCode, merchantId, success, fail }: any) => {
//   try {
//     const result: any[] = await listTreeModuleAndFunc({
//       number: userCode,
//       merchantId,
//     });
//     const targetMenu: any = result.filter((item: any) => item.text === '统一追溯平台');
//     let menuData: any[] = [];
//     console.log('targetMenu', targetMenu);
//     const filterData = (data: any) => {
//       if (data.children && data.children.length > 0) {
//         data.children.map((item: any) => {
//           filterData(item);
//         });
//       } else {
//         menuData.push(data);
//       }
//     };
//     filterData(targetMenu[0]);
//     console.log('menuData', menuData);
//     setSession(menuData);
//     success(menuData);
//   } catch (error) {
//     fail();
//   }
// };

/**
 * sessions存
 */
// const setSession = (data: any) => {
//   sessionStorage.setItem(ROUTE_KEY.MENU_LIST_KEY, JSON.stringify(data));
// };

/**
 * sessions取
 */
// const getSession = () => {
//   let list = sessionStorage.getItem(ROUTE_KEY.MENU_LIST_KEY) || '';
//   try {
//     return JSON.parse(list) || '';
//   } catch (error) {
//     return '';
//   }
// };

const combineParams = (route: string, params: any, mainUserStore: any) => {
  let query = '';
  if (params) {
    const { ...rest } = params;
    // let str: any = { ...rest };
    // if (NODE_ENV !== 'production') {
    const _openx_header = base.encode(JSON.stringify({ ...mainUserStore }));
    let str = {
      ...rest,
      _openx_header,
    };
    // }
    query = qs.stringify(str, true);
  }

  return `${route}${query}`;
};

/**
 * 跳转页面
 * @param route 跳转的路由
 * @param params 参数
 */
export const routePush = (route: string, params = {}) => {
  const app = getDvaApp();
  const { mainUserStore } = app._store.getState();
  if (NODE_ENV === 'production') {
    window.location.href = combineParams(ApiConfig.getPublicUrl(route), params, mainUserStore);
    // const filterMenu = (menuList: any[]) => {
    //   const [target] = routes.filter((item: any) => item.path === route);
    //   if (target) {
    //     const [_target] = menuList.filter((item) => item.text === target.name);
    //     if (_target) {
    //       window.parent.postMessage(
    //         {
    //           type: 'portalNewTab',
    //           data: {
    //             text: _target.text,
    //             path: combineParams(_target.menuHref, params, mainUserStore),
    //             id: _target.id,
    //           },
    //         },
    //         '*'
    //       );
    //     } else {
    //       window.parent.postMessage(
    //         {
    //           type: 'portalNewTab',
    //           data: {
    //             text: target.name,
    //             path: combineParams(ApiConfig.getPublicUrl(route), params, mainUserStore),
    //             id: Math.random().toString(),
    //           },
    //         },
    //         '*'
    //       );
    //     }
    //   }
    // };
    // const menuData = getSession();
    // if (menuData) {
    //   filterMenu(menuData);
    // } else {
    //   const app = getDvaApp();
    //   const { mainUserStore } = app._store.getState();
    //   getMuen({
    //     userCode: mainUserStore.user.number,
    //     merchantId: mainUserStore.user.merchantId,
    //     success: (data: any[]) => {
    //       filterMenu(data);
    //     },
    //     fail: () => {
    //       notification.error({
    //         message: '页面跳转错误',
    //         description: '页面打开错误，请重试。',
    //       });
    //     },
    //   });
    // }
  } else {
    history.push(combineParams(route, params, mainUserStore));
  }
};
